package com.shop.user.api.service;

import com.shop.common.model.InputBean;
import com.shop.common.model.ServiceBean;
import com.shop.common.model.param.user.AddressInput;
import com.shop.common.model.result.user.AddressOutput;

import java.util.List;

/**
 * @author zhoulk
 * @Description: 用户地址管理服务
 * @date: 2019年03月26日  16:50
 */

public interface IAddressSvc {
    /**
     * @Author zhoulk
     * @Description //新增收货地址
     * @Date 14:15 2019/3/1
     *
     * @Param [paramModel]
     * @return com.shop.common.model.ResultModel<java.lang.String>
     * @errorCode //TODO
     **/
    ServiceBean<String> insertAddress(InputBean<AddressInput> inputBean);

    /**
     * @Author zhoulk
     * @Description //查看地址详情
     * @Date 14:15 2019/3/1
     *
     * @Param [paramModel]
     * @return com.shop.common.model.ResultModel<com.shop.common.entity.user.AddressInput>
     * @errorCode //TODO
     **/
    ServiceBean<AddressOutput> selectAddress(InputBean<AddressInput> inputBean);

    /**
     * @Author zhoulk
     * @Description //查询收货地址列表
     * @Date 14:16 2019/3/1
     *
     * @Param [paramModel]
     * @return com.shop.common.model.ResultModel<java.util.List < com.shop.common.entity.user.AddressInput>>
     * @errorCode //TODO
     **/
    ServiceBean<List<AddressOutput>> selectAddressList(InputBean<AddressInput> inputBean);

    /**
     * @Author zhoulk
     * @Description //修改收货地址信息
     * @Date 14:17 2019/3/1
     *
     * @Param [paramModel]
     * @return com.shop.common.model.ResultModel<java.lang.String>
     * @errorCode //TODO
     **/
    ServiceBean<String> updateAddress(InputBean<AddressInput> inputBean);

    /**
     * @Author zhoulk
     * @Description //根据地址Id删除收货地址
     * @Date 14:21 2019/3/1
     *
     * @Param [paramModel]
     * @return com.shop.common.model.ResultModel<java.lang.String>
     * @errorCode //TODO
     **/
    ServiceBean<String> deleteAddressById(InputBean<List<Integer>> inputBean);

    /**
     * @Author zhoulk
     * @Description //根据用户删除收货地址
     * @Date 14:22 2019/3/1
     *
     * @Param [paramModel]
     * @return com.shop.common.model.ResultModel<java.lang.String>
     * @errorCode //TODO
     **/
    ServiceBean<String> deleteAddressByUser(InputBean<Integer> inputBean);

    ServiceBean settingDefault(AddressInput address);
}
